package digitrencer;

/**
 * A vezetéket megvalósító osztály.
 * @author Gergő
 */
public class Wire {
         /**
         * A vezeték elején lévő érték.
         */
	private boolean startValue;
         /**
         * A vezeték végén lévő érték.
         */
	private boolean endValue;
         /**
         * Az az érték, mely megmondja, hogy a vezeték elejére van-e alkatrész csatlakoztatva.
         */
	private boolean hasInput;

        /**
         * A Wire osztály konstruktora.
        */
        Wire() {
            startValue=false;
            endValue=false;
            hasInput=false;
        }

        /**
         * A vezetékek frissítési metódusa, mely a kimenetre beállítja a
         * bemeneti értéket.
         * @return Amennyiben a vezetéken változás történt, igaz értékkel tér vissza.
         */
	public boolean refresh() {
            if (endValue!=startValue)
            {
                endValue=startValue;
                return true;
            }
            else return false;
	}

        /**
         * A vezeték végén levő értéket lekérdező függvény.
         * @return A vezeték végén lévő érték.
        */
	public boolean getEnd() {
            return endValue;
	}

        /**
         * A vezeték elején levő érték beállítására szolgáló függvény.
         * @param val   A beállítani kívánt érték.
        */
	public void setStart(boolean val) {
            startValue=val;
	}

        /**
         * A hasInput értékét lekérdező függvény.
         * @return Igaz, ha már van bemeneti alkatrész csatlakoztatva a vezetékhez.
        */
	public boolean getHasInput() {
            return hasInput;
	}

        /**
         * A vezeték hasInput értéket beállítja ez a függvény a paraméterben
         * kapott értékre.
         * @param hasInput  A beállítani kívánt érték.
        */
	public void setHasInput(boolean hasInput) {
            this.hasInput=hasInput;
	}
}